<template>
  <div :class="{ 'line': row === 1, 'lines': row > 1 }" :title="hoverTip ? content : null" :style="{ '--row': row }">
    <slot name="pre"></slot>
    {{ content }}
    <slot name="aft"></slot>
  </div>
</template>

<script lang="ts" setup>
// Props declaration using defineProps
const props = defineProps({
  row: {
    type: Number,
    default: 1
  },
  hoverTip: {
    type: Boolean,
    default: false
  },
  content: {
    type: String,
    default: ''
  }
})

// `install` function is no longer needed in Vue 3, use `defineComponent` if necessary
</script>

<style lang="scss" scoped>
.line {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.lines {
  display: -webkit-box;
  word-break: break-all;
  overflow: hidden;
  text-overflow: ellipsis;
  -webkit-line-clamp: var(--row);
  -webkit-box-orient: vertical;
}
</style>
